home *** CD-ROM | disk | FTP | other *** search
- /* 'Deep causal reasoning' diagnosis of car starting problems,
- based on Luc Steels article "Components of Expertise" in AI Magazine,
- Vol. 11, No. 2, 1990. */
-
- /*
- Forward chaining version (see CARBKWD.KB for backward chaining version)
- */
- rule init forward
- if start
- then
- remove start &
- add [transmission-ok, prereq, engine-starts] &
- add [starter-turning, prereq, engine-starts] &
- add [plug1-fires, prereq, engine-starts] &
- add [plug2-fires, prereq, engine-starts] &
- add [plug3-fires, prereq, engine-starts] &
- add [plug4-fires, prereq, engine-starts] &
- add [cable1-ok, prereq, plug1-fires] &
- add [cable2-ok, prereq, plug2-fires] &
- add [cable3-ok, prereq, plug3-fires] &
- add [cable4-ok, prereq, plug4-fires] &
- add [coil-powered, prereq, X-fires] &
- add [starter-powered, prereq, starter-turning] &
- add [battery-charged, prereq, starter-powered] &
- add [battery-charged, prereq, coil-powered] &
- add [need_to_investigate, engine-starts].
-
- rule found_culprit forward
- if
- [observation, F, n] &
- -- [Anything, prereq, F]
- then
- announce [F,' is a source of difficulty', nl,
- 'so you should fix it and try again.'] &
- halt. /* single fault assumption! */
-
- rule diagnose forward
- if
- [observation, X, n] & /* 'n' is a negative finding */
- [P, prereq, X]
- then
- add [need_to_investigate, P].
-
- rule ask_it forward
- if
- [need_to_investigate,X]
- then
- query ['Is it the case that',X,'(y./n.)'] receives_answer Ans &
- add [observation,X,Ans] &
- remove [need_to_investigate, X].
-